package com.qf.service;

import com.qf.dfa.SensitiveWordFilter;
import com.qf.model.StandardSubmit;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * 实现敏感词过滤策略
 * <p>
 * "phase,black,limitFiveMinutes,dirtyWords,fee,router".split(,)
 */
@Service("dirtyWords")
@Slf4j
public class DirtyWordFilterServiceImpl implements FilterChainService {
    /**
     * 实现敏感词过滤策略
     *
     * @param standardSubmit
     * @return
     */
    @Override
    public boolean strategy(StandardSubmit standardSubmit) {
        System.out.println("======实现敏感词过滤策略====");
/*        敏感词过滤 : 提供短信息安全过滤功能，对非法信息和反动信息进行过滤。
        - 可以先用IK分词对短信发送内容进行分词，然后用分词后的内容依次查询缓存中的敏感词
                - 如果短信发送内容存在敏感词就把发送日志存到Elasticsearch
                - 如果同时是HTTP的发送方式就模拟出状态报告推送给客户*/
        //1.获取短信内容
        String messageContent = standardSubmit.getMessageContent();
        //2.分词
        SensitiveWordFilter sensitiveWordFilter = SensitiveWordFilter.getInstance();
        int i = sensitiveWordFilter.checkSensitiveWord(messageContent, 0, SensitiveWordFilter.maxMatchType);
        if (i > 0) {
            log.info("[策略模块 - 敏感词策略] 敏感词策略执行失败!!!该短信内容：{" + messageContent + "}含有敏感词");
            return false;
        }
        log.info("[策略模块 - 敏感词策略] 敏感词策略执行成功!!!该短信内容不包含敏感词");
        System.out.println("====敏感词过滤策略执行成功!!!该短信内容不包含敏感词====");
        return true;
    }
}
